package br.com.android.persistencia;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;

import org.apache.http.entity.SerializableEntity;

import br.com.android.modelo.Calendario;
import br.com.android.modelo.Documento;

import android.content.Context;
import android.os.Parcel;
import android.os.Parcelable;


public class manipularDados implements Parcelable {
	
	private static Context context;
	
	public manipularDados(Context context) throws FileNotFoundException{
		
		this.context = context;
	}
	
	 private manipularDados(Parcel p){  
		 this.context = context; 
	 }  
	
	public static final Parcelable.Creator<manipularDados>  
	   CREATOR = new Parcelable.Creator<manipularDados>() {  
	  
	   public manipularDados createFromParcel(Parcel in) {  
	     return new manipularDados(in);  
	   }  
	  
	   public manipularDados[] newArray(int size) {  
	     return new manipularDados[size];  
	   }  
	 }; 
	
	public ArrayList<Documento> getListadocs() {
		return Listadocs;
	}

	public void setListadocs(ArrayList<Documento> listadocs) {
		Listadocs = listadocs;
	}

	public ArrayList<Calendario> getListaCalendar() {
		return ListaCalendar;
	}

	public void setListaCalendar(ArrayList<Calendario> listaCalendar) {
		ListaCalendar = listaCalendar;
	}

	private ArrayList<Documento> Listadocs = new ArrayList<Documento>();
	private ArrayList<Calendario> ListaCalendar = new ArrayList<Calendario>();
	
	public void inserirDocumento(Documento novoDoc) {
        this.Listadocs.add(novoDoc);
	}
	
	public void inserirCalendario(Calendario novoCalendario) {
        this.ListaCalendar.add(novoCalendario);
	}
	
	public static Documento getDoc(ArrayList<Documento> docs, String nome){
		
        for(int i=0;i < docs.size();i++) {
        	
        	if(docs.get(i).getTitulo().equalsIgnoreCase(nome)){
        			return docs.get(i);        		
        	}
        	
        }
        return null;
	}

	public static Calendario getComp(ArrayList<Calendario> comp, String nome){
		
        for(int i=0;i < comp.size();i++) {
        	
        	if(comp.get(i).getTitulo().equalsIgnoreCase(nome)){
        			return comp.get(i);        		
        	}
        	
        }
        return null;
	}

	public static void guardaDocumentos(ArrayList<Documento> docs, String userName) throws IOException{
		
		//FileWriter writer = new FileWriter(new File("documentos.txt"));
        //PrintWriter saida = new PrintWriter(writer);
        
		String arquivo = userName + "docs.txt";
		FileOutputStream saida = context.openFileOutput(arquivo,
				Context.MODE_APPEND);
		
		String text;
		
        for(int i=0;i < docs.size();i++) {
            text = docs.get(i).getId() + "," 
            + docs.get(i).getTitulo() + ","
            + docs.get(i).getTipo() + "," 
            + docs.get(i).getConteudo() + ","
            + docs.get(i).getData();
            
            saida.write(text.getBytes());
            saida.write("\n".getBytes());	
        }
        saida.flush();
        saida.close();
	}

	public static void guardaCalendar(ArrayList<Calendario> calendar, String userName) throws IOException{
		
		//FileWriter writer = new FileWriter(new File("calendario.txt"));
        //PrintWriter saida = new PrintWriter(writer);
		
		String arquivo = userName + "comp.txt";
		FileOutputStream saida = context.openFileOutput(arquivo,
				Context.MODE_APPEND);
        
        String text;
        
        for(int i=0;i < calendar.size();i++) {
            text = calendar.get(i).getTitulo() + "," 
            + calendar.get(i).getDescricao() + ","
            + calendar.get(i).getHora() + "," 
            + calendar.get(i).getData();
            
            saida.write(text.getBytes());
            saida.write("\n".getBytes());	           
            
        }
        saida.flush();
        saida.close();
	}
	
public void carregaDocumentos(ArrayList<Documento> docs, String userName) throws IOException {
		
		//File file = context.getFilesDir();
		//File arquivo = new File("data/data/br.com.android/file/documentos.txt");
        
		String nome = userName + "docs.txt";
	
		File file = context.getFilesDir();
		File arquivo = new File(file + "/" + nome);

		FileInputStream reader = context.openFileInput(nome);
		
		byte[] leitor = new byte[(int)arquivo.length()];
		
		reader.read(leitor);		
		
		String lido = new String(leitor);
		
        if(!arquivo.exists()) arquivo.createNewFile();
        
        else {        	                    
                String [] linha = null;
                String [] vetor = null;
                
                linha = lido.split("\n");
        
                for(int i=0; i<linha.length;i++){
                        vetor = linha[i].split(",");
                
                        String titulo = vetor[1];
                        int tipo = Integer.parseInt(vetor[2]);
                        String conteudo = vetor[3];
                        int id = Integer.parseInt(vetor[0]);
                        String data = vetor[4];
               
                        Documento novoDoc = new Documento(titulo,tipo,id,conteudo,data);
                        inserirDocumento(novoDoc);
                }
                reader.close();
        }
	}
	
	public void carregaCalendario(ArrayList<Calendario> calendar, String userName) throws IOException {
		
		String nome = userName + "comp.txt";
		
		File file = context.getFilesDir();
		File arquivo = new File(file + "/" + nome);

		FileInputStream reader = context.openFileInput(nome);
		
		byte[] leitor = new byte[(int)arquivo.length()];
		
		reader.read(leitor);		
		
		String lido = new String(leitor);
		
        if(!arquivo.exists()) arquivo.createNewFile();
        
        else {        	                    
                String [] linha = null;
                String [] vetor = null;
                
                linha = lido.split("\n");
        
                for(int i=0; i<linha.length;i++){
                        vetor = linha[i].split(",");
                
                        String titulo = vetor[0];
                        String descricao = vetor[1];
                        String hora = vetor[2];
                        String data = vetor[3];
               
                        Calendario novoCalendario = new Calendario(titulo,descricao,data,hora);
                        inserirCalendario(novoCalendario);
                }
                reader.close();
        }
	}

	@Override
	public int describeContents() {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public void writeToParcel(Parcel arg0, int arg1) {
		// TODO Auto-generated method stub
		
	}
	
}